import { hiprint, defaultElementTypeProvider } from './hiprint.bundle.js'
// 调用浏览器打印js
import "./plugins/jquery.hiwprint.js";
// 默认配置
import "./hiprint.config.js";
// 样式
import "./css/hiprint.css"
import "./css/print-lock.css"

/**
 * 自动连接 / 连接
 * cb: 连接回调， (status, msg) {
 *   // status: true/false
 *   // msg: status == true 时 返回socket.connect回调 e
 * }
 */
let autoConnect = function(cb) {
    console.log('autoConnect');
    window.autoConnect = true;
    window.hiwebSocket && window.hiwebSocket.hasIo() && window.hiwebSocket.start(cb);
};

/**
 * 取消自动连接 / 断开连接
 */
let disAutoConnect = function() {
    console.log('disAutoConnect');
    window.autoConnect = false;
    window.hiwebSocket && window.hiwebSocket.hasIo() && window.hiwebSocket.stop();
};

let hiPrintPlugin = {
    disAutoConnect,
    install: function(Vue, name = '$hiPrint', autoConnect = true) {
        if (!autoConnect) {
            disAutoConnect();
        }
        let globalVue = Vue.prototype || Vue.config.globalProperties;
        globalVue[name] = hiprint;
        /**
         * 预览打印，调起系统打印预览
         * provider 左侧拖拽元素
         * template 模版json字符串
         * args 打印数据data, options,
         */
        globalVue.$print = function(provider = defaultElementTypeProvider, template, ...args) {
                hiprint.init({
                    providers: [new provider()]
                });
                var hiprintTemplate = new hiprint.PrintTemplate({
                    template: template,
                });
                hiprintTemplate.print(...args);
                return hiprintTemplate;
            }
            /**
             * 单模版直接打印， 需客户端支持
             * provider 左侧拖拽项对象
             * template 模版json字符串
             * args 打印数据data, options,
             */
        globalVue.$print2 = function(provider = defaultElementTypeProvider, template, ...args) {
            hiprint.init({
                providers: [new provider()]
            });
            var hiprintTemplate = new hiprint.PrintTemplate({
                template: template,
            });
            hiprintTemplate.print2(...args);
            return hiprintTemplate;
        }
    }
}

hiprint.version = '1.0'

window.hiprint = hiprint;
export {
    autoConnect,
    disAutoConnect,
    hiprint,
    hiPrintPlugin,
    defaultElementTypeProvider,
}